package main

import "fmt"

func maxSatisfied(customers []int, grumpy []int, X int) int {
	total := 0
	n := len(customers)
	for i := 0; i < n; i++ {
		if grumpy[i] == 0 {
			total += customers[i]
		}
	}
	increase := 0
	for i := 0; i < X; i++ {
		increase += customers[i] * grumpy[i]
	}
	maxIncrease := increase
	for i := X; i < n; i++ {
		increase = increase - customers[i-X]*grumpy[i-X] + customers[i]*grumpy[i]
		maxIncrease = max(maxIncrease, increase)
	}
	return total + maxIncrease
}

func max(a, b int) int {
	if a > b {
		return a
	}
	return b
}

func main() {
	customers := []int{1, 0, 1, 2, 1, 1, 7, 5}
	grumpy := []int{0, 1, 0, 1, 0, 1, 0, 1}
	n := maxSatisfied(customers, grumpy, 3)
	fmt.Println(n)
}

///解题思路
/*
遍历等于0也就是不生气的时候 看看有多少客人 这个是他应得

再根据他 秘密技巧 可以控制长时间不生气的时间，如：3分钟 那么就取相邻的三个数之和（减去不生气的那个）  遍历 取最大

加上之前不生气得到的值  就是他能最大获客的数量

*/
